﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPos.Entity;
using AcadPosApp.Utilidades;
using System.Data;

namespace AcadPosApp.Cadastros
{
    public partial class frmCadPolo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregaEstados();
                pnlPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
                pnlCadastro.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConfirmar.ClientID + "')");
                txtCadPesqAdmPolo.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultaAdmPolo.ClientID + "')");
                txtCEP.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultarCEP.ClientID + "')");
            }
        }

        private void carregaEstados()
        {
            ddlEstadoPesquisa.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlEstadoPesquisa.DataTextField = "ESTADO";
            ddlEstadoPesquisa.DataValueField = "ID_ESTADO";
            ddlEstadoPesquisa.DataBind();
            ddlEstadoPesquisa.Items.Insert(0, new ListItem("Todos", "0"));
        }


        protected void gvwPesquisa_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                Polo polo = new Polo();
                int index = int.Parse((String)e.CommandArgument);
                polo.IdPolo = Convert.ToInt32(gvwPesquisa.DataKeys[index]["ID_POLO"].ToString());
                polo = ControlClass.CNPolo.retornaPolo(polo);
                // = Server.HtmlDecode(gvwPesquisa.Rows[index].Cells[2].Text);
                string usuario = User.Identity.Name;

                if (e.CommandName == "Alterar")
                {
                    pnlCadastro.Visible = true;
                    pnlPesquisa.Enabled = false;
                    carregaEstadosPesquisa();
                    txtDescricao.Text = polo.DescricaoPolo.ToString();
                    txtEmail.Text = polo.Email.ToString();
                    ddlCadEstado.SelectedValue = polo.IdEstado.ToString();
                    ddlSituacao.SelectedValue = polo.Situacao.ToString();
                    txtCEP.Text = polo.Cep.ToString();
                    txtEndereco.Text = polo.Endereco;
                    txtNumeroEndereco.Text = polo.NumeroEndereco.ToString();
                    txtComplemento.Text = polo.Complemento;
                    txtBairro.Text = polo.Bairro;
                    ddlUF.SelectedValue = polo.Estado.ToString();
                    txtCidadeUF.Text = polo.Cidade;
                    txtDDD1.Text = polo.Ddd.ToString();
                    if (polo.Ddd2 > 0)
                        txtDDD2.Text = polo.Ddd2.ToString();
                    txtTelefone.Text = polo.Fone1.ToString();
                    if (polo.Fone2 != string.Empty)
                        txtCelular.Text = polo.Fone2.ToString();

                    DataTable dt = ControlClass.CNPolo.listaAdmPolosId(polo);
                    txtCadPesqAdmPolo.Text = dt.Rows[0]["NOME"].ToString();
                    gvwAdmPolo.Visible = true;
                    gvwAdmPolo.DataSource = dt;
                    gvwAdmPolo.DataBind();
                    gvwAdmPolo.SelectedIndex = 0;

                    ViewState["ID_POLO"] = gvwPesquisa.DataKeys[index]["ID_POLO"].ToString();
                    btnConfirmar.CommandName = "Alterar";

                }
                else if (e.CommandName == "Excluir")
                {
                    polo = ControlClass.CNPolo.retornaPolo(polo);
                    pnlCadastro.Visible = false;
                    if (ControlClass.CNPolo.excluir(polo, usuario))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoExcluir, "")), true);
                        carregaGrid();
                        pnlCadastro.Visible = false;
                        pnlPesquisa.Enabled = true;
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                    }
                }

            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("FK_"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroChaveEstrangeira, "")), true);
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                pnlCadastro.Visible = false;
                pnlPesquisa.Enabled = true;
            }
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            try
            {
                carregaGrid();
                TrustX.Util.UtilForm.LimparCampos(pnlCadastro);

                pnlCadastro.Visible = false;

            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, ex.Message.ToString())), true);
            }
        }

        private void carregaGrid()
        {
            gvwPesquisa.Visible = true;
            Polo polo = new Polo();
            polo.DescricaoPolo = txtPesquisa.Text;
            polo.IdEstado = Convert.ToInt32(ddlEstadoPesquisa.SelectedValue);
            gvwPesquisa.DataSource = ControlClass.CNPolo.listaPolos(polo);
            gvwPesquisa.DataBind();
            gvwPesquisa.SelectedIndex = -1;
        }

        protected void ddlEstadoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwPesquisa.Visible = false;
        }

        protected void btnInserir_Click(object sender, EventArgs e)
        {
            pnlPesquisa.Enabled = false;
            pnlCadastro.Visible = true;
            carregaEstadosPesquisa();
            btnConfirmar.CommandName = "Inserir";
        }

        private void carregaEstadosPesquisa()
        {
            ddlCadEstado.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlCadEstado.DataTextField = "ESTADO";
            ddlCadEstado.DataValueField = "ID_ESTADO";
            ddlCadEstado.DataBind();

            ddlUF.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlUF.DataTextField = "ESTADO";
            ddlUF.DataValueField = "ESTADO";
            ddlUF.DataBind();
        }

        protected void btnConsultarCEP_Click(object sender, EventArgs e)
        {
            TrustX.DadosEndereco dadosEndereco = new TrustX.DadosEndereco();
            dadosEndereco = TrustX.Util.UtilForm.ObterDadosEndereco(txtCEP.Text);
            if (dadosEndereco.Cidade != null)
            {
                txtCidadeUF.Text = dadosEndereco.Cidade;
                txtBairro.Text = dadosEndereco.Bairro;
                txtEndereco.Text = dadosEndereco.Endereco;
                ddlUF.SelectedValue = dadosEndereco.Estado;
            }
            else
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Verifique por favor se colocou o CEP correto.")), true);
        }

        protected void btnConsultaAdmPolo_Click(object sender, EventArgs e)
        {
            Polo polo = new Polo();
            polo.NomeAdm = txtCadPesqAdmPolo.Text;
            gvwAdmPolo.Visible = true;
            gvwAdmPolo.DataSource = ControlClass.CNPolo.listaAdmPolos(polo);
            gvwAdmPolo.DataBind();
            if (gvwAdmPolo.Rows.Count > 0)
                gvwAdmPolo.SelectedIndex = 0;
            else
                gvwAdmPolo.SelectedIndex = -1;
        }

        protected void gvwAdmPolo_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwAdmPolo.PageIndex = e.NewPageIndex;
            Polo polo = new Polo();
            polo.NomeAdm = txtCadPesqAdmPolo.Text;
            gvwAdmPolo.PageIndex = e.NewPageIndex;
            gvwAdmPolo.DataSource = ControlClass.CNPolo.listaAdmPolos(polo);
            gvwAdmPolo.DataBind();
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                if (gvwAdmPolo.Rows.Count > 0 && gvwAdmPolo.SelectedIndex > -1)
                {
                    string usuario = User.Identity.Name;
                    Polo polo = new Polo();
                    polo.IdEstado = Convert.ToInt32(ddlCadEstado.SelectedValue);
                    polo.DescricaoPolo = txtDescricao.Text;
                    polo.Situacao = ddlSituacao.SelectedValue;
                    polo.Cep = Convert.ToInt32(txtCEP.Text);
                    polo.Endereco = txtEndereco.Text;
                    polo.NumeroEndereco = Convert.ToInt32(txtNumeroEndereco.Text);
                    polo.Complemento = txtComplemento.Text;
                    polo.Bairro = txtBairro.Text;
                    polo.Estado = ddlUF.SelectedValue;
                    polo.Cidade = txtCidadeUF.Text;
                    polo.Email = txtEmail.Text;
                    polo.Ddd = Convert.ToInt32(txtDDD1.Text);
                    polo.Fone1 = txtTelefone.Text;

                    if (txtDDD2.Text.Trim() == string.Empty || txtDDD2.Text == "&nbsp;")
                        polo.Ddd2 = 0;
                    else
                        polo.Ddd2 = Convert.ToInt32(txtDDD2.Text.Trim());                        

                    if (txtCelular.Text != "")
                        polo.Fone2 = txtCelular.Text;

                    polo.IdAdmPolo = Convert.ToInt32(gvwAdmPolo.SelectedValue);

                    if (btnConfirmar.CommandName == "Inserir")
                    {
                        DataTable dtDados = ControlClass.CNPolo.poloExisteNesseEstado(polo.IdEstado, polo.DescricaoPolo);
                        if (dtDados.Rows.Count > 0)
                        {
                           ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.RegistroJaCadastrado, "")), true); 
                           txtDescricao.Text = string.Empty;
                           txtDescricao.Focus();
                        }
                        else
                        {

                            if (ControlClass.CNPolo.inserir(polo, usuario))
                            {
                                finalizaOperacao();
                                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                            }
                        }
                    }
                    else if (btnConfirmar.CommandName == "Alterar")
                    {
                        polo.IdPolo = Convert.ToInt32(ViewState["ID_POLO"].ToString());
                        if (ControlClass.CNPolo.alterar(polo, usuario))
                        {
                            finalizaOperacao();
                            pnlPesquisa.Enabled = true;
                            gvwPesquisa.Visible = false;
                            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoAlterar, "")), true);
                        }
                    }
                }
                else
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Selecione um Administrador de Polo.")), true);
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, ex.Message.ToString())), true);
            }
        }

        private void finalizaOperacao()
        {
            // TrustX.Util.UtilForm.LimparCampos(pnlCadastro);
            gvwAdmPolo.Visible = false;
            pnlCadastro.Visible = false;
            pnlPesquisa.Enabled = true;
            carregaEstados();
            txtPesquisa.Text = string.Empty;
            gvwPesquisa.Visible = false;
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            finalizaOperacao();
        }

        protected void gvwPesquisa_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton l = (ImageButton)e.Row.FindControl("EXCLUIR");
                l.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();
            }

        }

        protected void gvwPesquisa_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[6].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[6].Text.Trim()) == "Ativo")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[6].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[6].Visible = false;
            }
            #endregion
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregaGrid();
        }

        protected void gvwAdmPolo_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtCadPesqAdmPolo.Text = Server.HtmlDecode(gvwAdmPolo.Rows[gvwAdmPolo.SelectedIndex].Cells[1].Text.ToString());
        }
    }
}